home *** CD-ROM | disk | FTP | other *** search
/ USA Bestseller / USA BESTSELLER Vol 1-95 (Hepp-Computer)(1995).iso / e202 / manual.doc < prev    next >
Text File  |  1994-08-22  |  42KB  |  963 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.                        _________________________________
  13.  
  14.                                    CRUSH v1.2
  15.  
  16.                            **** Shareware Manual ****
  17.  
  18.                        __________________________________
  19.  
  20.  
  21.  
  22.                              File Compression Tool
  23.             CRUSH (TM) Copyright Jeff Rollason, PocketWare (TM) 1994
  24.                               All Rights Reserved
  25.  
  26.  
  27.  
  28.  
  29.                         All Trademarks Are Acknowledged
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.           No part of this publication may be reproduced, transmitted,
  39.           transcribed,  stored in  a retrieval system, or  translated
  40.           into any other language in whole or in part, in any form or
  41.           by  any  means,  whether  it  be  electronic,   mechanical,
  42.           magnetic,  optical,  manual  or  otherwise,  without  prior
  43.           written consent of PocketWare.
  44.  
  45.             PocketWare PO Box 2369, Hendon, London NW4 1NR, England.
  46.              CIS 100031,3537.  Internet 100031.3537@compuserve.com
  47.  
  48.  
  49.    __________________________________________________________________________
  50.    Contents:
  51.  
  52.  
  53.    CONTENTS:                                                             Page
  54.  
  55.    Getting Started: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  56.  
  57.    The CRUSH program: . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  58.  
  59.         Default use of PKZIP  . . . . . . . . . . . . . . . . . . . . . . . 3
  60.         -j    Use ARJ . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  61.         -o    Use ZOO . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  62.         -l    Use LHA . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  63.         -h    Use HA  . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  64.         -m    Moves file to archive . . . . . . . . . . . . . . . . . . . . 3
  65.         -c    Compare with and without CRUSH  . . . . . . . . . . . . . . . 3
  66.         -f    Optimise until 5 failed attempts to improve compression . . . 4
  67.         -f<n> Optimise until "n" failed attempts to improve compression . . 4
  68.         -t    Only create CRUSH archive if 5% improvement . . . . . . . . . 4
  69.         -t<n> Only create CRUSH archive if "n"% improvement . . . . . . . . 4
  70.         -r    Recurse subdirectories  . . . . . . . . . . . . . . . . . . . 4
  71.         -:    Set range(s) of dates . . . . . . . . . . . . . . . . . . . . 5
  72.         -x    Exclude pathspecs . . . . . . . . . . . . . . . . . . . . . . 6
  73.         -y    Answer YES to all questions . . . . . . . . . . . . . . . . . 6
  74.         -z    Add CRUSH archive comment . . . . . . . . . . . . . . . . . . 6
  75.         -v    Show files for adding without CRUSHing  . . . . . . . . . . . 6
  76.         -n    Store files without paths . . . . . . . . . . . . . . . . . . 7
  77.         -Q    Query each file to be archived. . . . . . . . . . . . . . . . 7
  78.         -q    QUIET mode, no output . . . . . . . . . . . . . . . . . . . . 7
  79.         -a    Create an additional index  . . . . . . . . . . . . . . . . . 7
  80.         -e    Use the existing archive for comparison . . . . . . . . . . . 7
  81.         -C    Colour off  . . . . . . . . . . . . . . . . . . . . . . . . . 8
  82.         -C<n> Set colour  . . . . . . . . . . . . . . . . . . . . . . . . . 8
  83.         -s    Minimise temporary disk space (slow!) . . . . . . . . . . . . 8
  84.         -i<n> Control information type  . . . . . . . . . . . . . . . . . . 8
  85.         -2    Set display of times to 24 hour clock . . . . . . . . . . . . 8
  86.  
  87.  
  88.    The UNCRUSH Program: . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  89.  
  90.         -v    Display without uncompressing . . . . . . . . . . . . . . . .10
  91.         -V    Display archive comment only  . . . . . . . . . . . . . . . .10
  92.         -o    Overwrite files without query . . . . . . . . . . . . . . . .10
  93.         -u    Uncompress NEWER or NEW files . . . . . . . . . . . . . . . .10
  94.         -a    Uncompress NEW files  . . . . . . . . . . . . . . . . . . . .10
  95.         -i    Ignore paths in CRUSH file  . . . . . . . . . . . . . . . . .10
  96.         -I    Only ignore drives in paths . . . . . . . . . . . . . . . . .10
  97.         -q    Quiet mode: No output at all  . . . . . . . . . . . . . . . .11
  98.         -z    Only suppress output of archiver  . . . . . . . . . . . . . .11
  99.         -e    Extract even if not CRUSH archive . . . . . . . . . . . . . .11
  100.         -l    Only display a simple file list . . . . . . . . . . . . . . .11
  101.         -2    Display times as 24-hour clock  . . . . . . . . . . . . . . .11
  102.  
  103.    Worked Examples: . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
  104.  
  105.    The UNDO and UNDO2 Programs: . . . . . . . . . . . . . . . . . . . . . .13
  106.  
  107.    Configuration: . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
  108.  
  109.    Technical Details: . . . . . . . . . . . . . . . . . . . . . . . . . . .15
  110.  
  111.  
  112.    _________________________________________________________________________
  113.    Getting Started                                                   Page  1
  114.  
  115.    ____________________________________
  116.    Installation
  117.  
  118.    CRUSH installation is very simple. The user need only copy the contents of
  119.    the  release disk to the desired directory. A file INSTALL.BAT is provided
  120.    to  do  this for you. Your  chosen directory should be within your  search
  121.    path (See the PATH variable in your DOS documentation).
  122.  
  123.    In  order  to be able to  use  CRUSH, you must have one of  the  archivers
  124.    PKZIP, ARJ, LHA, ZOO or HA.
  125.  
  126.    ____________________________________
  127.    What is CRUSH?
  128.  
  129.    CRUSH  is a command-line tool that uses your existing archiver PKZIP, ARJ,
  130.    LHA,  ZOO,  or HA to generate  smaller archives than it could alone.  With
  131.    many  applications  this improvement  may  be less than 5%,  but  dramatic
  132.    improvements  of  10%-70%  are  much  more typical. A block  test  of  128
  133.    archives  totalling 2349 wordprocessing files (see README) averaged a  47%
  134.    improvement  (100k ZIP reduced to 53k CRUSH!). CRUSH is ideally suited  to
  135.    users  who regularly archive material or who just need to save disk space.
  136.    There  is  no other compression tool  for DOS (as of June 1994)  that  can
  137.    match the compression performance of CRUSH, and most do not come close.
  138.  
  139.    ____________________________________
  140.    CRUSH and other Archivers
  141.  
  142.    CRUSH is used from the command-line in much the same way as archivers such
  143.    as  PKZIP and ARJ. If you are already familiar with these, then you should
  144.    be  able to adapt to CRUSH with very little difficulty. If you are a  ZOO,
  145.    LHA  or  HA user, then you  will observe some changes, but will  find  the
  146.    basic operation of CRUSH very similar.
  147.  
  148.    ____________________________________
  149.    Simple use of CRUSH
  150.  
  151.    To  create a CRUSH archive called  BACKUP containing all the files in  the
  152.    current directory requires the following simple command:
  153.  
  154.         CRUSH BACKUP
  155.  
  156.    This  will create the file BACKUP.ZIP (PKZIP must be available). The  user
  157.    can be more selective by adding filespecs, as follows:
  158.  
  159.         CRUSH BACKUP *.DOC README MAN*.*
  160.  
  161.    This  will only save files with the specified filespecs. The user may also
  162.    want  to  receive some feedback about  how much space is being saved.  The
  163.    "-c" (compare) option will allow a comparison to be made:
  164.  
  165.         CRUSH -c BACKUP *.DOC README MAN*.*
  166.  
  167.    Once  created, a CRUSH archive  can be uncompressed using UNCRUSH in  much
  168.    the  same  way as PKUNZIP  is used. e.g.  UNCRUSH BACKUP *.DOC. This  only
  169.    extracts  files  matching *.DOC. The  user is advised to read the  "Worked
  170.    Examples"  section  for more details  of CRUSH usage, and also the  README
  171.    file.  Simply type "CRUSH" to obtain on-line help.
  172.  
  173.  
  174.    _________________________________________________________________________
  175.    The CRUSH program                                                 Page  2
  176.  
  177.  
  178.    This  is the program that will replace the use of PKZIP, LHA, ARJ, ZOO and
  179.    HA.  Whichever  of these you already  use will still be needed, but  CRUSH
  180.    will  run it for you. The command-line syntax of CRUSH is, for most cases,
  181.    identical to PKZIP usage. CRUSH preserves dates, times and attributes.
  182.  
  183.    USAGE:    CRUSH [opts] archive [pathspecs] [@lists] [>outfile]
  184.  
  185.    Where:
  186.  
  187.    [opts]         These  are options that control CRUSH's behaviour. e.g.  -r
  188.                   causes CRUSH to search subdirectories. These can be grouped
  189.                   together for brevity or specified one-by-one, e.g.
  190.  
  191.                   -rca      is equivalent to:      -r -c -a
  192.  
  193.                   The  user  can  choose  to  use  "/" in place  of  "-"  for
  194.                   preference. e.g. -r and /r are equivalent.
  195.  
  196.    archive        This  is the name of the archive to be created e.g.  BACKUP
  197.                   or  BACKUP.001 etc. If no extension is specified, then  the
  198.                   default  extension  for the  archiver used will be  adopted
  199.                   (default  PKZIP). If the  special name "[]" is given  (e.g.
  200.                   CRUSH []),  then CRUSH will generate a unique archive  name
  201.                   based  on the current date and time (assuming that archives
  202.                   are not created within 2 seconds of each other).
  203.  
  204.    [pathspecs]    These  are  the files  to be compressed (defaulting to  all
  205.                   files in the current directory). e.g.
  206.  
  207.                        CRUSH SAVE \WP\*.DOC *.TXT
  208.  
  209.                   This  will compress into SAVE.ZIP all files matching  *.DOC
  210.                   from  the directory \WP  and all files matching *.TXT  from
  211.                   the current directory. The path \WP\ will also be stored in
  212.                   the  archive,  to  be  re-created by UNCRUSH.  UNCRUSH  can
  213.                   optionally ignore stored pathnames.
  214.  
  215.                   CRUSH  uses proper rather than DOS wildcards. e.g. the  DOS
  216.                   wildcard  *FRED.*  will  match  a file called  JOE  because
  217.                   *FRED.*  and  *.* are  treated by DOS as equivalent.  CRUSH
  218.                   interprets  "*"  as  any sequence of characters,  including
  219.                   zero length.  See also the "-x" EXCLUSION filespecs.
  220.  
  221.    [@lists]       CRUSH  will accept response files containing lists of files
  222.                   to be processed. These should contain one pathspec per line
  223.                   and can contain comments starting with ";" e.g.
  224.  
  225.                        *.EXE
  226.                        \WP\*.DOC ; save my docs
  227.                        ; Fred's stuff here onwards
  228.                        \BIN\*.EXE
  229.  
  230.                   Unlike PKZIP, the response file can be of any length (PKZIP
  231.                   limits the user to 500 filespecs).
  232.  
  233.    [>outfile]     CRUSH  can  generate a  response file by  re-directing  the
  234.                   output to a file for later use e.g. CRUSH DOCS >SAVE
  235.  
  236.  
  237.    __________________________________________________________________________
  238.    CRUSH Options                                                      Page  3
  239.  
  240.  
  241.    CRUSH  will default to using PKZIP  unless -j, -o, -l or -h is  specified.
  242.    PKZIP  is  the  world's  best  known archiver, written by  Paul  Katz  and
  243.    marketed  as  Shareware by  PKWARE.  CRUSH will work with any  version  of
  244.    PKZIP,  but  the user is recommended  to use PKZIP v2.04 or  later,  which
  245.    achieves significantly better compression than v1.x.
  246.  
  247.    ____________________________________
  248.    -j    Use ARJ
  249.  
  250.         This  instructs CRUSH to use Robert K Jung's "ARJ" program instead of
  251.         PKZIP.  This  can be specified  as a general default using the  CRUSH
  252.         environment variable e.g. SET CRUSH=-j
  253.  
  254.         Example:
  255.  
  256.              CRUSH BACKUP        Use PKZIP
  257.  
  258.              CRUSH -j BACKUP     Use ARJ
  259.  
  260.    ____________________________________
  261.    -o    Use ZOO
  262.  
  263.         This will use the ZOO program, creating ZOO files.
  264.  
  265.    ____________________________________
  266.    -l    Use LHA
  267.  
  268.         This will use Haruyasu Yoshizaki's well-known "LHA" program, creating
  269.         LZH files.
  270.  
  271.    ____________________________________
  272.    -h    Use HA
  273.  
  274.         This  will  use Harri Hirvola's  "HA" program, creating HA files.  HA
  275.         produces  smaller  archives than any  of the archivers above, but  is
  276.         quite slow.
  277.  
  278.    ____________________________________
  279.    -m    Moves file to archive
  280.  
  281.         This will delete the original files after they have been successfully
  282.         compressed.
  283.  
  284.    ____________________________________
  285.    -c    Compare with and without CRUSH
  286.  
  287.         This  allows CRUSH to show how much filespace has been saved over the
  288.         archiver  alone.  This  will  make  CRUSH  slower  as  an  additional
  289.         compression  is  needed in order  to make a comparison (unless -e  is
  290.         also  used).  The  results  are  displayed as a bar  graph,  plotting
  291.         archive  and CRUSH sizes. The original file size can also be  plotted
  292.         by adding the option -i2.
  293.  
  294.    __________________________________________________________________________
  295.    CRUSH Options                                                      Page  4
  296.  
  297.    ____________________________________
  298.    -f    Optimise until 5 failed attempts to improve compression
  299.  
  300.         This  will make CRUSH experiment with different orderings to  improve
  301.         the compression. CRUSH will end when it has failed 5 times to find an
  302.         improvement.  This will increase the run time of CRUSH by at least  5
  303.         times.   Each  time  it  provides  an  improvement,  the  time  taken
  304.         increases.  CRUSH is unlikely to  take more than 15 times the  normal
  305.         compress time.
  306.  
  307.         The  results of this trial  are displayed as two bar graphs,  showing
  308.         the size of the first and best CRUSH compression. (See option "-s").
  309.  
  310.    ____________________________________
  311.    -f<n> Optimise until "n" failed attempts to improve compression
  312.  
  313.         As  "-f",  but  allowing the  user  to specify how long CRUSH  is  to
  314.         continue the trial before giving up e.g.
  315.  
  316.              CRUSH -f2 BACKUP         will give up after only 2 failures.
  317.  
  318.              CRUSH -f100 BACKUP       will give up after 100 failures.
  319.  
  320.    ____________________________________
  321.    -t    Only create CRUSH archive if 5% improvement
  322.  
  323.         This  creates a CRUSH archive only if it can improve the archive size
  324.         by 5%, otherwise it creates a conventional archive. It invokes the -c
  325.         option,  which adds to the run time, as it needs to run the  archiver
  326.         without CRUSH for comparison.
  327.  
  328.    ____________________________________
  329.    -t<n> Only create CRUSH archive if "n"% improvement
  330.  
  331.         As "-t", but allowing the user to set the threshold e.g.
  332.  
  333.              CRUSH -t10 BACKUP        CRUSH only if 10% better
  334.  
  335.    ____________________________________
  336.    -r    Recurse subdirectories
  337.  
  338.         This  will search subdirectories from the specified directories, also
  339.         storing paths in the archive. Unlike PKZIP, CRUSH defaults to storing
  340.         pathnames  with the files. However  this is done in a very  efficient
  341.         manner and so does not significantly increase the archive size (PKZIP
  342.         uses  a space-consuming format for this e.g. searching a subdirectory
  343.         DOCUMENT\MYDOCS  with  100 files  would require an extra 1660  bytes,
  344.         whereas CRUSH would require just 16). Example:
  345.  
  346.              CRUSH -r BACKUP \WP\DOCS\*.WP *.TXT
  347.  
  348.         This will search \WP\DOCS and all its subdirectories for the filespec
  349.         *.WP,  and  the current  directory and its subdirectories for  *.TXT.
  350.         CRUSH will store the full path e.g. \WP\DOCS\HOME\DOC.WP etc.
  351.  
  352.         See  also the CRUSH option "-n" and UNCRUSH options "-i" and "-I" for
  353.         ignoring paths and drives.
  354.  
  355.  
  356.    __________________________________________________________________________
  357.    CRUSH Options                                                      Page  5
  358.  
  359.    ____________________________________
  360.    -:    Set range(s) of dates
  361.  
  362.         DATE  OPTIONS.  These  are  used  to specify a date  range  for  file
  363.         matching.  If  a  single  date  is specified then this  will  be  the
  364.         earliest  date  to be included.  If a second date is specified,  then
  365.         this  is  taken  as  the  as  the  end date. Dates can  be  mixed  in
  366.         "absolute" and "relative" format. The full syntax is:
  367.  
  368.                  [!]:[=]<date>
  369.  
  370.          Where:  !   inverts  the  meaning  of  the  range set.  e.g.  "range
  371.                      1st-2nd" becomes "outside 1st-2nd"
  372.  
  373.                  =   sets both the start and end date to the date following.
  374.  
  375.          and <date> can be:
  376.                                                                 Example:
  377.            DD/MM/YY  absolute UK date                           21/2/94
  378.            MM/DD/YY  absolute US date (CRUSH determines which)  2/21/94
  379.            YY/MM/DD  absolute JAPAN date ( " )                  94/2/21
  380.            DDMonYY   absolute date in alternative format        21feb94
  381.            DDMon     absolute date (current year)               21feb
  382.            -DD       number of days before current date, OR     -3
  383.            m-MM      number of months OR                        m-2
  384.            y-YY      number of years (truncates to 83 years)    y-1
  385.            .name     where date is taken from file/dir "name"   .LASTBAC
  386.  
  387.         The  four  date  formats  can be mixed, e.g.  -:y-2:-5  (or /:y-2:-5)
  388.         specifies  files  created/modified between  2 years and 5  days  ago.
  389.         -:y-99:5jan  will  select  all  files  created on or  before  5th Jan
  390.         (current  year).  -!:=-1 selects  all files except  yesterday's.  The
  391.         ".name"  option allows compression of files relative to the date  and
  392.         time of an existing file. The latter feature allows the user to issue
  393.         commands  such  as "compress  all files modified/created  since  last
  394.         backup", using commands such as:
  395.  
  396.              CRUSH -:.BACKTAG BACKUP
  397.              REM>BACKTAG
  398.  
  399.         The  REM>BACKTAG will create an empty file with the current date  and
  400.         time,  so that the next backup  will start with the date and time  of
  401.         that file.
  402.  
  403.         General Examples: (all use the archive name "BACK")
  404.  
  405.         CRUSH -:11feb BACK       Compressing  files  modified/created  on  or
  406.                                  after February 11th of this year.
  407.  
  408.         CRUSH -:-3 BACK          Files modified/created today or during the 3
  409.                                  previous days.
  410.  
  411.         CRUSH -:-0 BACK          As above, but today only.
  412.  
  413.         CRUSH -!:y-3 BACK        Not files created during the last 3 years.
  414.  
  415.         CRUSH -:m-4:m-3 BACK     Will compress files modified/created between
  416.                                  4 and 3 months ago.
  417.  
  418.    __________________________________________________________________________
  419.    CRUSH Options                                                      Page  6
  420.  
  421.    ____________________________________
  422.    -x    Exclude pathspecs
  423.  
  424.         In programs such as PKZIP and ARJ, the exclusion pathspecs can appear
  425.         in  any  position in the  command-line. With CRUSH they  MUST  appear
  426.         AFTER  the  archive name with  the other pathspecs. CRUSH limits  the
  427.         user to 300 exclusion filespecs.
  428.  
  429.         Examples: (pathspecs are all case-insensitive)
  430.  
  431.         CRUSH BACKUP *.EXE -xTEST*.* *.COM
  432.  
  433.         This  will compress all files matching *.EXE and *.COM, but not those
  434.         matching TEST*.*. The order of these filespecs is irrelevant.
  435.  
  436.         CRUSH -r BACKUP -xDOC\*.BAK -x*.TMP
  437.  
  438.         This  will  recurse, searching  for files to compress, but  excluding
  439.         files  that match the path and  name DOC\*.BAK, or the name *.TMP  in
  440.         any subdirectory.
  441.  
  442.         CRUSH -r BACKUP -x@NOTTHIS -x@ORTHIS
  443.  
  444.         This  will recurse, searching for file to compress, but excluding any
  445.         pathspecs in the response files NOTTHIS or ORTHIS.
  446.  
  447.    ____________________________________
  448.    -y    Answer YES to all questions
  449.  
  450.         This  will allow CRUSH to compress without pausing for queries,  such
  451.         as permission to overwrite an existing file.
  452.  
  453.    ____________________________________
  454.    -z    Add CRUSH archive comment
  455.  
  456.         This  will prompt the user for an archive comment to add to the CRUSH
  457.         file.  Ths will be displayed by UNCRUSH when uncrushing or  verifying
  458.         an archive.
  459.  
  460.         The  user  can  automatically  provide  a CRUSH comment  without  the
  461.         program pausing for input by using the DOS echo command. e.g.
  462.  
  463.              ECHO My Comment|CRUSH -z BACKUP
  464.  
  465.         which will give the archive the comment "My Comment".
  466.  
  467.    ____________________________________
  468.    -v    Show files for adding without CRUSHing
  469.  
  470.         This  will  show which  files CRUSH would compress  without  actually
  471.         compressing,  with a summary at the end. If the output is re-directed
  472.         to a file, then the re-directed file will hold a simple list of files
  473.         (equivalent to PKZIP option "-@") e.g.
  474.  
  475.              CRUSH -v BACK > LIST          Creating  a list of matching files
  476.                                            that would be archived.
  477.  
  478.         The archive name specified will be ignored.
  479.  
  480.    __________________________________________________________________________
  481.    CRUSH Options                                                      Page  7
  482.  
  483.    ____________________________________
  484.    -n    Store files without paths
  485.  
  486.         This allows the user to prevent pathnames from being stored e.g.
  487.  
  488.              CRUSH -n BACKUP MYDOC\*.DOC
  489.  
  490.         would store files matching *.DOC, but without the path MYDOC\.
  491.  
  492.    ____________________________________
  493.    -Q    Query each file to be archived
  494.  
  495.         This allows the user to choose on-line which files are to be included
  496.         in the archive e.g.
  497.  
  498.              CRUSH -Qr DOC *.WP
  499.  
  500.         will  search recursively (-r) for  all files matching *.WP and  query
  501.         whether  each is to be added to the archive. The user has the  option
  502.         to accept or reject all the remaining files at any point, or to abort
  503.         the  compression.  This option provides  an easy way to  construct  a
  504.         response file, e.g. the following expanded example:
  505.  
  506.              CRUSH -Qr DOC *.WP *.TXT > SAVE
  507.  
  508.         would  allow  the user  to  select files for compression  while  also
  509.         creating a response file SAVE for future use, e.g. CRUSH DOC @SAVE.
  510.  
  511.    ____________________________________
  512.    -q    QUIET mode, no output
  513.  
  514.         This will run CRUSH without any display output, unless CRUSH needs to
  515.         prompt the user with a question (inhibited by -y). This is useful for
  516.         instances  where  CRUSH is called  within BAT scripts or from  within
  517.         another program.
  518.  
  519.    ____________________________________
  520.    -a    Create an additional index
  521.  
  522.         The price paid for creating CRUSH archives is that, although programs
  523.         such  as PocketD Plus can still browse the contents of the  archives,
  524.         searching for files inside CRUSH archives would be prohibitively slow
  525.         if  each  CRUSH  archive  had to be temporarily  decompressed  whilst
  526.         scanning.  The  -a option will  force CRUSH to create  an  additional
  527.         external  index with the extension ".CRI". PocketD Plus will use this
  528.         for  searching (and also browsing)  to allow files to be searched  or
  529.         selected  very quickly. This will  obviously have an associated  disk
  530.         space overhead, but this would not be significant on disks with small
  531.         cluster  sizes (e.g. floppies), or where the CRUSH saving is  already
  532.         substantial (i.e. more than 10%)
  533.  
  534.    ____________________________________
  535.    -e    Use the existing archive for comparison
  536.  
  537.         This  will allow the user to test the compression improvement without
  538.         re-creating  the  original archive  for comparison. CRUSH will  still
  539.         need  the files for compression to be available in uncompressed form.
  540.         The  option  -c must also be  used. Make sure that the archive to  be
  541.         compared is not already a CRUSH archive!
  542.  
  543.  
  544.    __________________________________________________________________________
  545.    CRUSH Options                                                      Page  8
  546.  
  547.    ____________________________________
  548.    -C    Colour off
  549.  
  550.         This will use whatever colour is currently in use rather than forcing
  551.         white on blue. This normally means white on black.
  552.  
  553.    ____________________________________
  554.    -C<n> Set colour
  555.  
  556.         This  will  allow the user to  override the colour of the  bar  graph
  557.         displayed  during compression. "n" is the normal colour attribute  in
  558.         the range 0 to 7.
  559.    ____________________________________
  560.    -s    Minimise temporary disk space (slow!)
  561.  
  562.         CRUSH  will  normally use about  25% extra temporary disk space  when
  563.         running  with the -f optimise  option. If you do not have  sufficient
  564.         space  to run CRUSH with this option, then "-s" will reduce the space
  565.         CRUSH uses, but at the cost of a longer compression time. This option
  566.         is  not  recommended for routine  use unless you are normally  always
  567.         short  of disk space. CRUSH does not make use of extended or expanded
  568.         memory.
  569.    ____________________________________
  570.    -i<n>  Control information type
  571.  
  572.         By default, CRUSH will display a bar graph.
  573.  
  574.         If -i1  is  specified,  a  more  comprehensive table  will  be  shown
  575.         instead, giving more information.
  576.  
  577.         If -i2  is specified, CRUSH will still show a bar graph, but when  -c
  578.         is  selected it will simultaneously plot the file size, archive  size
  579.         and  CRUSH size, rather than just archive and CRUSH. This will  allow
  580.         all  three sizes to be compared, but will give limited resolution  of
  581.         the difference between just the archive and CRUSH.
  582.  
  583.         Note: CRUSH plots to a resolution of 1 in 114 (using the special half
  584.         width character "221")
  585.  
  586.    ____________________________________
  587.    -2    Set display of times to 24 hour clock
  588.  
  589.         This will force the display of 24 hour clock times instead of 12 hour
  590.         during browsing.
  591.  
  592.  
  593.    __________________________________________________________________________
  594.    The UNCRUSH Program                                                Page  9
  595.  
  596.  
  597.    The  UNCRUSH program is used for uncompressing or viewing CRUSH  archives.
  598.    It requires access to the corresponding uncompressing programs used by the
  599.    base  archiver e.g. PKUNZIP for PKZIP files and ARJ for ARJ files.  Unlike
  600.    CRUSH,  UNCRUSH is copyrighted FREEWARE. You may use and distribute freely
  601.    providing  that  its intended  use  is not mis-represented and it  is  not
  602.    modified in any way.
  603.  
  604.    USAGE:    UNCRUSH [opts] archive [destination] [pathspecs] [>outfile]
  605.  
  606.    Where:
  607.  
  608.    [opts]         These are options that control UNCRUSH's behaviour. e.g. -v
  609.                   causes  CRUSH to display the names of the compressed  files
  610.                   without  uncompressing them. These can be grouped  together
  611.                   for brevity or specified one-by-one, e.g.
  612.  
  613.                   -ioq      is equivalent to:      -i -o -q
  614.  
  615.                   The  user  can  choose  to  use  "/" in place  of  "-"  for
  616.                   preference e.g. -i and /i are equivalent.
  617.  
  618.    archive        This  is  the name of  the archive to be uncompressed  e.g.
  619.                   BACKUP  or  BACKUP.001 etc.  If no extension is  specified,
  620.                   then  UNCRUSH will look  for known extensions that use  the
  621.                   specified  name in the order  CRU, CRI, ZIP, ARJ, LZH,  ZOO
  622.                   then  HA. UNCRUSH cannot uncompress files with non-standard
  623.                   extensions.  Such  files will  need to be  re-named  before
  624.                   using UNCRUSH, or uncompressed first using PKUNZIP etc.
  625.  
  626.    [destination]  This  is  the  destination  path  where  files  are  to  be
  627.                   uncompressed.  This  must be  terminated by ":" or  "\"  to
  628.                   allow  it to be  distinguished from normal pathspecs  (same
  629.                   operation  as  PKUNZIP). Paths  within the archive will  be
  630.                   combined with any specified destination path, e.g.
  631.  
  632.                        CRUSH BACKUP \WP\*.DOC            followed by:
  633.  
  634.                        UNCRUSH BACKUP MYDOC\HOME\
  635.  
  636.                   will uncompress to MYDOC\HOME\WP\*.DOC
  637.  
  638.    [pathspecs]    These  are the files to be uncompressed (defaulting to  all
  639.                   files). These can include paths e.g.
  640.  
  641.                        UNCRUSH SAVE \WP\*.DOC *.TXT
  642.  
  643.                   This will uncompress pathspecs from SAVE matching \WP\*.DOC
  644.                   and  any pathspecs with the filespec *.TXT. i.e. *.TXT will
  645.                   match  *.TXT and \WP\*.TXT,  but \WP\*.DOC would not  match
  646.                   *.DOC.  UNCRUSH  can  be  set to optionally  ignore  stored
  647.                   pathnames. As  with CRUSH, UNCRUSH uses proper rather  than
  648.                   DOS wildcards (See CRUSH for details).
  649.  
  650.    [>outfile]     UNCRUSH  will allow the user to create response or  summary
  651.                   files using re-directed output. See -v, -V and -l.
  652.  
  653.  
  654.    __________________________________________________________________________
  655.    UNCRUSH Options:                                                   Page 10
  656.  
  657.    ____________________________________
  658.    -v    Display without uncompressing
  659.  
  660.         This  will cause UNCRUSH to  report the pathspecs inside the  archive
  661.         without  uncompressing.  This gives  a sorted output reporting  size,
  662.         date  and time of the file stored. Attributes are not displayed, even
  663.         though stored.
  664.  
  665.    ____________________________________
  666.    -V    Display archive comment only
  667.  
  668.         This  will  simply display the  archive comment and the name  of  the
  669.         archive.  This  is  useful  for  cataloging purposes,  allowing  this
  670.         information to be appended to a reference file e.g.
  671.  
  672.              UNCRUSH -V FRED >> REFFILE
  673.  
  674.    ____________________________________
  675.    -o    Overwrite files without query
  676.  
  677.         This  will force UNCRUSH to overwrite files regardless of whether the
  678.         file  already exists. UNCRUSH would normally inform the user if files
  679.         already  exist with an option to skip or overwrite the file.  UNCRUSH
  680.         helpfully also informs the user whether the file to be overwritten is
  681.         NEWER, OLDER, IDENTICAL or SAME DATE, DIFFERENT SIZE.
  682.  
  683.    ____________________________________
  684.    -u    Uncompress NEWER or NEW files
  685.  
  686.         This will only uncompress NEW or NEWER files from within the archive.
  687.         This will still prompt for overwrites, unless -o is also specified.
  688.  
  689.    ____________________________________
  690.    -a    Uncompress NEW files
  691.  
  692.         This will only uncompress NEW files.
  693.  
  694.    ____________________________________
  695.    -i    Ignore paths in CRUSH file
  696.  
  697.         This  will  ignore all  paths inside the archive, therefore  possibly
  698.         generating  an  overwrite  warning if WP\FRED.DOC and  \DOC2\FRED.DOC
  699.         exist in the same CRUSH file.
  700.    ____________________________________
  701.    -I    Only ignore drives in paths
  702.  
  703.         As "-i", but only ignoring drive names stored in the CRUSH file. This
  704.         accommodates situations where a CRUSH command such as:
  705.  
  706.              CRUSH BACKUP S:\WP\*.DOC
  707.  
  708.         is  run,  storing a network drive  letter with the path. A user on  a
  709.         non-networked  PC would then be  unable to uncompress the CRUSH  file
  710.         without losing the path. The -I option allows this to be overridden.
  711.  
  712.  
  713.  
  714.    __________________________________________________________________________
  715.    UNCRUSH Options                                                    Page 11
  716.  
  717.    ____________________________________
  718.    -q    Quiet mode: No output at all
  719.  
  720.         This  will  inhibit  all  output from UNCRUSH, except  where  UNCRUSH
  721.         queries an overwrite.
  722.  
  723.    ____________________________________
  724.    -z    Only suppress output of archiver
  725.  
  726.         This  will only suppress the output of the unarchiver run by UNCRUSH.
  727.         e.g.  UNCRUSH  may call  PKUNZIP which normally displays  information
  728.         while  uncompressing.  This option  will inhibit this. This  may  not
  729.         always  be  safe if the  unarchiver has an unusual problem, in  which
  730.         case the error message the archiver displays will not be visible.
  731.  
  732.    ____________________________________
  733.    -e    Extract even if not CRUSH archive
  734.  
  735.         This  is convenient if the user  wants to use UNCRUSH to process  any
  736.         archives,  whether  CRUSH  or  not. This will support  any  pathspecs
  737.         given, but will not support specified destination directories.
  738.  
  739.    ____________________________________
  740.    -l    Only display a simple file list
  741.  
  742.         This  will replace the normal display  by a simple list of files  and
  743.         pathnames.  This is most usefully used with -v to generate a response
  744.         file.
  745.  
  746.    ____________________________________
  747.    -2    Display times as 24-hour clock
  748.  
  749.         This  is only a cosmetic detail, but many users are firmly  committed
  750.         to 12 or 24 hour clocks, in which case UNCRUSH will allow the default
  751.         12 hour clock file times to be replaced by a 24 hour clock times.
  752.  
  753.  
  754.    __________________________________________________________________________
  755.    Worked Examples                                                    Page 12
  756.  
  757.  
  758.    There  are many routine archiving tasks that CRUSH could be used for.  The
  759.    following  selects  a few that  either take particular advantage of  CRUSH
  760.    facilities,  or that may be particularly relevant when first using  CRUSH.
  761.    For simple examples see "Getting Started" at the beginning of this manual.
  762.  
  763.    ____________________________________
  764.    Generating a Response File for Future Backups
  765.  
  766.    Most archivers allow the user to use a "response" file containing file and
  767.    path  specifications  to  be  used  in addition to (or instead  of)  CRUSH
  768.    command-line  parameters.  This is convenient  when a list is very  large.
  769.    CRUSH  allows the user to choose files for archiving on-line using the  -Q
  770.    option. e.g.
  771.  
  772.         CRUSH -rQv TEST *.C *.ASM >RESPLIST
  773.  
  774.    This  will search all subdirectories (-r), querying each file found  (-Q),
  775.    but  without actually creating an archive (-v). The output is directed  to
  776.    the  file RESPLIST. The user can then use this for future CRUSH  archiving
  777.    in a command of the form:
  778.  
  779.         CRUSH BACKUP @RESPLIST
  780.  
  781.  
  782.    ____________________________________
  783.    Performing Archival Backups
  784.  
  785.    CRUSH's  option  to  backup files  dated  on or after a  named  file  (not
  786.    supported  by PKZIP etc.) makes it possible to create backups of all files
  787.    modified  since  the previous backup.  This can be combined  with  CRUSH's
  788.    ability to automatically generate a unique filename, as follows:
  789.  
  790.    BACK.BAT containing:
  791.  
  792.         CRUSH -r:.LASTBAC [] *.DOC *.C *.H
  793.         IF ERRORLEVEL 1 ECHO Error occurred!
  794.         IF ERRORLEVEL 1 GOTO EXIT
  795.         REM>LASTBAC
  796.         :EXIT
  797.  
  798.    The  "[]"  parameter replaces  the  normal archive name by a  unique  name
  799.    generated  using the current date and time (e.g. 1CD29E33.ZIP, which  uses
  800.    the  hexadecimal value of the  combined 32-bit date and time). CRUSH  will
  801.    then  search  all subdirectories for  all files matching *.DOC *.C or  *.H
  802.    modified  since the date and time of the file LASTBAC and add them to  the
  803.    archive. If the archive step fails (e.g. out of memory etc.), the error is
  804.    reported and the command sequence ended. If successful, then "REM>LASTBAC"
  805.    will  create an empty file with the current date and time for reference by
  806.    the next backup.
  807.  
  808.    On  the  next occasion that  the  command "BACK" is run, CRUSH  will  only
  809.    search for files modified since the last backup.
  810.  
  811.  
  812.    __________________________________________________________________________
  813.    Worked Examples                                                    Page 13
  814.  
  815.  
  816.    ____________________________________
  817.    Converting all Existing Archives to CRUSH
  818.  
  819.    This  would  be a potentially  mammoth task that would benefit  from  some
  820.    automation, unless you are willing to convert each file one-by-one. A good
  821.    choice for this task would be PocketD Plus v4.1 (D.EXE), as follows:
  822.  
  823.         MD TMP
  824.         CD TMP
  825.         D .ZIP/W[PKUNZIP -d $w//CRUSH -ert $w//PAUSE//D /zd]Rq
  826.  
  827.    This  example  converts ZIP  files  by running a command sequence  of  the
  828.    following type for each archive found:
  829.  
  830.         PKUNZIP -d \C\BATS.ZIP       Uncompress with subdirectories into TMP.
  831.         CRUSH -ert \C\BATS.ZIP       (See below).
  832.         PAUSE                        Allow inspection of result.
  833.         D /zd                        Delete uncompressed files/dirs from TMP.
  834.  
  835.    The CRUSH command compares the new CRUSH archive with the existing archive
  836.    (-e),  but  will  not replace  it  unless the new archive is at  least  5%
  837.    smaller  (-t). The files originally compressed may also include paths, and
  838.    so  CRUSH uses -r to search all uncompressed subdirectories created by the
  839.    "PKUNZIP -d"  command.  For those  with a cautious disposition, the  D.EXE
  840.    command-line  includes  the "q" option,  allowing the user to  confirm  or
  841.    select  each archive to be processed. The PAUSE command allows the user to
  842.    examine  the output of CRUSH before the command "D /zd" deletes the  files
  843.    and subdirectories temporarily uncompressed.
  844.  
  845.  
  846.    ____________________________________
  847.    The UNDO and UNDO2 Programs
  848.  
  849.    The  registered version of  CRUSH.EXE comes with two additional  programs,
  850.    UNDO.EXE and UNDO2.EXE, which provide tiny alternatives to UNCRUSH.EXE for
  851.    unpacking an uncompressed CRUSH archive.
  852.  
  853.    USAGE:    UNDO crushname
  854.              UNDO2 crushname
  855.  
  856.  
  857.    UNDO.EXE  is 3.8k and ignores any path information. UNDO2.EXE is 4.3k  and
  858.    will  also  re-construct embedded  paths. These programs can  be  included
  859.    within  distribution  archives  that  hold CRUSH archives,  providing  the
  860.    smallest  package that will allow UNCRUSHing without additional  programs.
  861.    Ideally  UNDO.EXE  and  a  CRU  archive could be embedded  inside  an  SFX
  862.    archive, e.g. using LHA:
  863.  
  864.         CRUSH -l DEMO ! *.DOC
  865.         LHA A DEMO UNDO.EXE
  866.         LHA S DEMO
  867.  
  868.    The "!" parameter above is the file "!" which contains a message displayed
  869.    when  the  archive DEMO.EXE is  run.  This can contain details of  how  to
  870.    uncompress  the  CRUSH archive, e.g.  "Unpack the CRUSH archive by  typing
  871.    UNDO DEMO.CRU after the DEMO.EXE executable has finished decompression."
  872.  
  873.    The  user  may  choose  to  rename  UNDO2.EXE to UNDO.EXE  or  some  other
  874.    convenient  name.  Note  that  distribution of CRUSH archives  requires  a
  875.    distribution licence (see REGISTER.DOC).
  876.  
  877.  
  878.    __________________________________________________________________________
  879.    Configuration                                                      Page 14
  880.  
  881.  
  882.    __________________________________
  883.    Configuration of CRUSH and UNCRUSH
  884.  
  885.    CRUSH  and  UNCRUSH  can  be  configured using environment  variables,  as
  886.    follows:
  887.  
  888.    The CRUSH variable:
  889.  
  890.         This  is particularly important if you decide not to use the  default
  891.         PKZIP used by CRUSH e.g.
  892.  
  893.              SET CRUSH=-j
  894.  
  895.         will force CRUSH to always use ARJ by default. Other options can also
  896.         be added e.g.
  897.  
  898.              SET CRUSH=-jCc
  899.  
  900.         will  also  force  the  normal  display  colour and  always  force  a
  901.         comparison between ARJ and CRUSH when creating a CRUSH file.
  902.  
  903.  
  904.    The UNCRUSH variable:
  905.  
  906.         This is less critical, but an example usage might be:
  907.  
  908.              SET UNCRUSH=-2e
  909.  
  910.         which  would use the 24 hour clock and also allow UNCRUSH to be  used
  911.         for uncompressing ordinary PKZIP, ARJ, LHA, ZOO and HA archives.
  912.  
  913.  
  914.    Environment  variables should be set in your AUTOEXEC.BAT, otherwise  they
  915.    will be lost next time the system is re-booted.
  916.  
  917.    __________________________________________________________________________
  918.    Technical Details                                                  Page 15
  919.  
  920.  
  921.    This  information is only of interest to 3rd party developers who may want
  922.    to provide support for CRUSH archives.
  923.  
  924.    __________________________________
  925.    Structure of CRUSH file (.CRU)
  926.  
  927.    Address Length in Bytes   Description
  928.  
  929.    000000  14               CRUSH v1.2
  930.    00000E  2                Chksum
  931.    000010  2                Number of paths (only 0-255 supported)
  932.    000012  2                Number of files
  933.    000014  2                Reserved
  934.    000016  4                Totalsize of files + header length(26)
  935.    00001A  "totalsize"      Data
  936.  
  937.    ; directory held at offset "Totalsize of files + header length(26)"
  938.    000000  1                Path number
  939.    000001  1                Attribute
  940.    000002  2                Time
  941.    000004  2                Date
  942.    000006  4                Size
  943.    00000A  13               Name
  944.    000017  1                Reserved
  945.    (above repeated "Number of files" times)
  946.  
  947.    ; "n" Paths
  948.    path1                    Each terminated by NULL
  949.    path2
  950.    ..
  951.  
  952.    ; Archive comment
  953.    comment                  Terminated by NULL
  954.  
  955.    __________________________________
  956.    Structure of CRUSH fast Index (.CRI)
  957.  
  958.    As CRU but with Totalsize field set to 0 + Headerlen(26)
  959.  
  960.    000016  4                Header length(26)
  961.  
  962.  
  963.